package com.grupobbva.seguridad.client.util;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.ResourceBundle;

import com.grupobbva.seguridad.client.domain.Aplicacion;
import com.grupobbva.seguridad.client.domain.Control;
import com.grupobbva.seguridad.client.domain.Oficina;
import com.grupobbva.seguridad.client.domain.Opcion;
import com.grupobbva.seguridad.client.domain.Perfil;
import com.grupobbva.seguridad.client.domain.Puesto;
import com.grupobbva.seguridad.client.domain.Usuario;

public class UtilDesarrollo {

	public static Usuario generarDatosUsuario() {
		Usuario usuario = new Usuario();

		ResourceBundle rb = null;
		try {
			rb = ResourceBundle.getBundle("seguridad_desarrollo");
			
			usuario.setUsuarioId(rb.getString("usuario.id"));
			usuario.setNombres(rb.getString("usuario.nombre"));
			usuario.setAplicacion(new Aplicacion());
			usuario.getAplicacion().setAplicacionId(Long.parseLong(rb.getString("usuario.aplicacion.id")));
			usuario.getAplicacion().setNombre(rb.getString("usuario.aplicacion.nombre"));
			usuario.setPerfil(new Perfil());
			usuario.getPerfil().setPerfilId(Long.parseLong(rb.getString("usuario.aplicacion.id")));
			usuario.getPerfil().setNombre(rb.getString("usuario.aplicacion.nombre"));
			usuario.setPuesto(new Puesto());
			usuario.getPuesto().setPuestoId(rb.getString("usuario.aplicacion.id"));
			usuario.getPuesto().setNombre(rb.getString("usuario.aplicacion.nombre"));
			usuario.setOficina(new Oficina());
			usuario.getOficina().setOficinaId(rb.getString("usuario.aplicacion.id"));
			usuario.getOficina().setNombre(rb.getString("usuario.aplicacion.nombre"));
			
			int nroOpciones = Integer.parseInt(rb.getString("usuario.opciones.cantidad"));

			Map<String, Opcion>  opciones  = new LinkedHashMap<String, Opcion>();
			Map<String, Control> controles = new LinkedHashMap<String, Control>();
			
			for (int i = 0; i < nroOpciones; i++) {
				int opcionId = (i+1);
				try {
					String cadenaOpc = rb.getString("usuario.opciones["+opcionId+"].datos");
					String[] camposOpc = cadenaOpc.split(",");
					Opcion opcion = new Opcion((long) opcionId, Long.parseLong(camposOpc[0]), camposOpc[1], Integer.parseInt(camposOpc[2]), camposOpc[3], -1);
					if (camposOpc.length == 5) {
						opcion.setOpcionPadreId(Long.parseLong(camposOpc[4]));
					}
					opciones.put(""+opcionId, opcion);
					
					int nroControles = Integer.parseInt(rb.getString("usuario.opciones["+opcionId+"].controles.cantidad"));
					
					for (int j = 0; j < nroControles; j++) {
						int controlId = j+1;
						String   cadenaCon = rb.getString("usuario.opciones["+opcionId+"].controles["+controlId+"].datos");
						String[] camposCon = cadenaCon.split(",");
						Control control = new Control(opcion.getOpcionId(), controlId, Boolean.parseBoolean(camposCon[0]), Boolean.parseBoolean(camposCon[1]));
						controles.put(opcion.getOpcionId()+"_"+control.getControlId(), control);
					}
				} catch (Exception e) {}
			}
			usuario.setOpciones(opciones);
			usuario.setControles(controles);
		} catch (Exception e) {}
		
		return usuario;
	}
	public static void main(String[] args) {
		Usuario usuario = UtilDesarrollo.generarDatosUsuario();
		System.out.println(usuario);
	}
}